package com.github.cakin.shiro.chapter19.service;

import com.github.cakin.shiro.chapter19.entity.Resource;

import java.util.List;
import java.util.Set;

/**
 * @className: ResourceService
 * @description: 资源服务
 * @date: 2020/5/25
 * @author: cakin
 */
public interface ResourceService {

    /**
     * 功能描述：创建资源
     *
     * @param resource 资源
     * @return Resource 资源
     * @author cakin
     * @date 2020/5/25
     */
    Resource createResource( Resource resource );
    /**
     * 功能描述：更新资源
     *
     * @param resource 资源
     * @return Resource 资源
     * @author cakin
     * @date 2020/5/25
     */
    Resource updateResource( Resource resource );
    /**
     * 功能描述：根据资源Id删除资源
     *
     * @param resourceId 资源Id
     * @author cakin
     * @date 2020/5/25
     */
    void deleteResource( Long resourceId );
    /**
     * 功能描述：根据资源Id查找资源
     *
     * @param resourceId 资源Id
     * @author cakin
     * @return Resource 资源
     * @date 2020/5/25
     */
    Resource findOne( Long resourceId );
    /**
     * 功能描述：查找所有资源
     *
     * @return List<Resource> 资源列表
     * @author cakin
     * @date 2020/5/25
     */
    List<Resource> findAll();

    /**
     * 得到资源id列表找到对应的权限字符串
     *
     * @param resourceIds 资源Id列表
     * @return Set<String> 资源字符集
     * @author cakin
     * @date 2020/5/25
     */
    Set<String> findPermissions( Set<Long> resourceIds );

    /**
     * 根据用户权限得到菜单
     *
     * @param permissions 权限集
     * @return List<Resource> 资源列表
     * @author cakin
     * @date 2020/5/25
     */
    List<Resource> findMenus( Set<String> permissions );
}
